←
▼
▲
ダウンロード
txt2bintxt.exe は、VBScript で、一部がバイナリになっているテキストファイルを
作成できるようにする変換ツールです。
f.WriteLine "123"
f.WriteLine Chr(&hFF)+"EF BB BF 0D 0A"
f.WriteLine "123"
バイナリになっている行は、行頭に Chr(&hFF) を出力してください。
31 32 33 0D 0A
EF BB BF 0D 0A
31 32 33 0D 0A
こうして出力したファイルを、in.txt として、
txt2bintxt.exe in.txt out.txt
を実行すると、out.txt は次のようになります。
out.txt (バイナリ表現)
out.txt (テキスト表現)
123
・ソ
123
EF BB BF 0D 0A
EF BB BF 0D 0A
・ソ
EF BB BF は、UTF-8 の BOM です。
→ txt2bintxt.zip
不要になった入力ファイル(in.txt) は、別途削除してください。
関連
BOM 付きテキストファイル
バイナリ・ファイル・アクセス
←
▼
▲
Sub Txt2BinTxt( SrcPath as string, DstPath as string )
(src)
参考
←
▼
▲
Function get_ADODBConsts() as ADODBConsts
ADODB モジュールの定数をメンバーに持つオブジェクトを返します。
ADODBConsts が定義する定数
サンプル
Dim c : Set c = get_ADODBConsts()
t = f.Read( c.adReadAll )
(src)
バイト配列を作成する関数
バイト配列と整数の間で変換する関数
関連
ファイル:
System.vbs
←
▼
▲
Function ADODBConsts::ConvertToByteArray( ByteArray as variant,
Offset as integer, Size as integer ) as array of Byte
文字列や配列や数値を、バイト配列に変換します。
【引数】
ByteArray
Offset
文字列、または配列、または数値
返り値の先頭となる ByteArray の中の位置。先頭=0
Size
ByteArray の中から返り値にするサイズ(バイト)。最後まで=-1
ファイル:
System.vbs
返り値
に渡せる
サンプル
Dim binary, stream
Dim c : Set c = get_ADODBConsts()
binary = c.ConvertToByteArray( ChrB( &h42 ) + ChrB( &h4D ), 0, Empty )
stream.Write binary
binary = c.ConvertToByteArray( &h4D, 1, Empty )
(src)
→ T_Binary フォルダ
テスト
参考
←
▼
▲
Function ADODBConsts::ConvertToStructuredByteArray( FormatAndDataArray as array ) as array of Byte
構造化した配列を、バイト配列に変換します。
【引数】
FormatAndDataArray
バイナリ配列へライトする部分の型とライトする値の集合
返り値
に渡せる
(src)
→ T_Binary フォルダ
テスト
参考
構造化した配列、FormatAndDataArray 引数の説明
←
▼
▲
Function ADODBConsts::BytesToShortInt( b0, b1, b2, b3 as integer ) as integer
2バイトのバイナリ・データを、-32768(&h8000)〜32767(&h7FFF) の整数に変換します。
サンプル
c.BytesToShortInt( &hFE, &hFF ) = &hFFFE
(src)
←
▼
▲
Function ADODBConsts::BytesToUShortIntToLongInt( b0, b1, b2, b3 as integer ) as integer
2バイトのバイナリ・データを、0〜65535 の整数に変換します。
サンプル
c.BytesToUShortIntToLongInt( &hFE, &hFF ) = 65534
(src)
←
▼
▲
Function ADODBConsts::BytesToLongInt( b0, b1, b2, b3 as integer ) as integer
4バイトのバイナリ・データを、Long 型整数に変換します。
サンプル
c.BytesToLongInt( &h78, &h56, &h34, &h12 ) = &h12345678
(src)
c.BytesToLongInt( AscB( b ), AscB( MidB( b, 2, 1 ) ), _
AscB( MidB( b, 3, 1 ) ), AscB( RightB( b, 1 ) ) )
←
▼
▲
Function ADODBConsts::ShortIntToBytes( Value as integer ) as array of integer
-32768(&h8000)〜32767(&h7FFF) の整数を、2バイトの配列に変換します。
サンプル
c.ShortIntToBytes( &hFEFF ) = Array( &hFF, &hFE )
&h0000〜&h7FFF(Integer型)、&h10000〜 &h7FFFFFFF(Long型) は、正の整数です。
&h8000〜&hFFFF(Integer型)、&h80000000〜(Long型) は、負の整数です。
(src)
←
▼
▲
Function ADODBConsts::LongIntToUShortIntToBytes( Value as integer ) as array of integer
0〜65535 の整数を、2バイトの配列に変換します。
サンプル
c.LongIntToUShortIntToBytes( 65534 ) = Array( &hFE, &hFF )
(src)
←
▼
▲
Function ADODBConsts::LongIntToBytes( Value as integer ) as array of integer
整数を、4バイトの配列に変換します。
サンプル
c.LongIntToBytes( &h12345678 ) = Array( &h78, &h56, &h34, &h12 )
(src)
←
▼
▲
ADODB.Stream 関連
←
▼
▲
→ vbslib.vbs
Sub ADODB_Stream_loadFromFile( Stream as ADODB.Stream, Path as string )
エラーメッセージを適切にした ADODB.Stream.LoadFromFile 。
テスト
ソース
参考
→ T_fc.vbs
T_IsSameBinaryFile_ReadWriteLock
←
▼
▲
複数行からなる文字列のうち、それぞれの行を要素とした配列を返します。
Function ArrayFromLines( lines as string ) as Array of string
For Each line In ArrayFromLines( "ABC"+ vbCRLF +"DEF" )
Next
【引数】
lines
返り値
複数行からなる文字列
それぞれの行を要素とした配列
上記 ArrayFromLines の返り値は、Array( "ABC", "DEF" )
"ABC"+ vbCRLF +"DEF"
サンプル
関連
改行文字は、CR+LF でも LF でもどちらでも構いません。
a_array = ArrayFromLines( Trim2( root.selectSingleNode( _
"./Lines/text()" ).nodeValue ) )
サンプル
<Lines>
Line (1)
Line (2)
</Lines>
XML
VBScript
a_array は、Array( "Line (1)", "Line (2)" ) になります。
Lines
nodeValue
selectSingleNode
テスト
→ vbslib.vbs
ソース
→ T_Lines.vbs
←
▼
▲
→ セクション化されたソースファイル (Module Mixer)
関連
→ 構造化テキストフォーマット
セクション化されたテキストを集めた文字列を返します
セクション化されたテキストを編集します
複数のセクションに分けたテキストファイルを扱います。
セクション化されたテキストを集めてファイルを作成します
←
▼
▲
Sub CreateFromTextSections( in_XML_Path as string, in_XML_Root as IXMLDOMElement,
in_CreateFilePath as string, in_MixedTextXPath as string, in_Empty as Empty )
【引数】
in_XML_Path
in_XML_Root
TextSection タグがある XML ファイルのパス
Empty、または、in_XML_Path の XML の要素オブジェクト
in_CreateFilePath
作成するファイルのパス
in_MixedTextXPath
セクション化されたテキストを集めてファイルを作成します。
返り値
Empty、または、オプション(下記)
in_Empty
セクション化されたテキストを集めたテキスト
下記の MixedText タグがある XML 要素の XPath、基準は in_XML_Root
参考
テキスト、MixedText タグのサンプル
in_XML_Root の中にある
は、TextSection タグの path 属性に指定できます。
サンプル
CreateFile タグに指定されたすべてのファイルを作成する。
CreateFromTextSections "SettingA.xml", Empty, Empty, Empty, Empty
in_XML_Root に Empty を指定すると、内部で
( in_XML_Path, Empty ) を呼び出します。 その分、
CreateFile タグに指定されたすべてのファイルを作成する。
サンプル
CreateFromTextSections "SettingA.xml", Empty, "_out.txt", "#C_Type", Empty
テスト
→ T_TextSection.vbs
T_CreateFromTextSections
ソース
→ ToolsLib.vbs
関連
CreateFromTextSections "SettingA.xml", Empty, "_out.txt", "/MixedText[@id='C_Type']", Empty
処理時間がかかります。
in_Empty に get_ToolsLibConsts().DeleteIfNoSection を指定すると、MixedText タグの中の TextSection タグ
が1つも無いときに、in_CreateFilePath のファイルが削除されます。
←
▼
▲
Function ReadTextSections( in_XML_Root as IXMLDOMElement,
in_MixedTextXPath as string, in_VariablesForPath as string,
in_Variables as LazyDictionaryClass, in_Empty as Empty )
【引数】
in_XML_Root
in_MixedTextXPath
in_MixedSettingXPath の基準となる XML要素(タグ)
下記の MixedText タグがある XML 要素の XPath、基準は in_XML_Root
in_XML_FilePath
アドレスの基準となる XML ファイルのパス
in_VariablesForPath
セクション化されたテキストを集めた文字列を返します。
返り値
Empty を指定してください
in_Empty
セクション化されたテキストを集めたテキスト
Empty または path 属性に評価するときに使う辞書
参考
テスト
→ T_TextSection.vbs
T_ReadTextSections
ソース
→ ToolsLib.vbs
<File mixed_text="SettingA.xml#mixed_1"/>
サンプル
SettingB.xml
<MixedText id="mixed_1">
<TextSection path="File.c#First"/>
<TextSection path="File.c#Second"/>
</MixedText>
SettingA.xml
VBScript
Set linker = new LinkedXMLs
linker.XmlTagNamesHavingIdName = Array( "MixedText" )
xml_path = "SettingB.xml"
Set xml_root = LoadXML( xml_path, Empty )
linker.StartNavigation xml_path, xml_root
Set mixed_text_tag = linker.GetLinkTargetNode( xml_root.getAttribute( "mixed_text" ) )
text = ReadTextSections( mixed_text_tag, ".", linker.TargetXmlPath, Empty, Empty )
linker.EndNavigation
"SettingB.xml"
"mixed_text"
mixed_text
SettingB.xml の XML 属性から参照する MixedText タグからセクションを集める。
ReadTextSections
関連
テキストのサンプル
in_XML_Root の中にある
と、in_VariablesForPath 引数の変数は、TextSection タグの path
属性に指定できます。
VBScript
xml_path = "SettingB.xml"
Set xml_root = LoadXML( xml_path, Empty )
text = ReadTextSections( xml_root, "/MixedText[@id='mixed_1']", xml_path, Empty, Empty )
ReadTextSections
←
▼
▲
→ ToolsLib.vbs
ソース
テスト
→ T_TextSection.vbs
T_MakeCrossedOldSections
Sub MakeCrossedOldSections( in_OutFolderPath as string, _
in_NewFolderPath as string or PathDictionaryClass, in_OldFolderPath as string, _
in_NewTxscPath as string, in_OldTxscPath as string, in_Option as Empty )
新しいセクションの構成に合わせるように、古い内容のセクションを集めます。
【引数】
in_OutFolderPath
in_NewFolderPath
出力ファイルを格納するフォルダーのパス
新しいセクションの構成を持つファイルが入ったフォルダーのパス
in_OldFolderPath
古い内容のセクションを持つファイルが入ったフォルダーのパス
in_OldFolderPath の中間ファイルを格納するフォルダーのパス
in_OldTxscPath
in_NewFolderPath の中間ファイルを格納するフォルダーのパス
in_NewTxscPath
Empty を指定してください
in_Option
→ T_CrossedOld フォルダー
in_NewFolderPath 引数に
のオブジェクトを指定できます。
in_NewFolderPath 引数に指定したファイルに対応する出力ファイルが in_OutFolderPath 引数に指定
したフォルダーに格納されます。
関連
中間ファイルは、
が出力するセクション インデックス ファイルです。
サンプル
Out
New
Old
A.txt
B.txt
/* Title: Section_A_1 */
This is old Section-A-1.
/* Title: Section_B_1 */
This is old Section-B-1.
/* Title: Section_B_2 */
This is old Section-B-2.
A.txt
/* Title: Section_A_1 */
New A-1.
New A-2.
B.txt
/* Title: Section_B_1 */
New B-1.
/* Title: Section_B_2 */
New B-2.
/* Title: Section_B_1 */
This is old Section-B-1.
Y.txt
X.txt
/* Title: Section_A_1 */
This is old Section-A-1.
/* Title: Section_B_2 */
This is old Section-B-2.
/* Title: Section_A_2 */
This is old Section-A-2.
/* Title: Section_A_2 */
/* Title: Section_A_2 */
This is old Section-A-2.
New フォルダーにある A.txt と同じ名前のファイルを、Out フォルダーに作成します。 その内容は、
New フォルダーにある A.txt のセクションの構成(順序)、すなわち、Section_A_1、Section_A_2 の
順になります。 セクションの名前は、
が入力する形式で記述します。
Natural Docs
形式のみ対応しています。 それぞれセクションの内容は、Old フォルダーに
現在は、
ある、すべてのファイルの中から検索して見つかったセクションをコピーした内容になります。
→ ModuleAssort
←
▼
▲
内部で
を呼び出しています。
MakeTextSectionIndexFile "*.c", "NaturalDocs", "C_Type", Empty, Empty
Sub MakeTextSectionIndexFile( Path as string or PathDictionaryClass,
TagTypeName as string, BeforeRootFullPath as string, AfterRootFullPath as string )
タグが付いたファイルから、セクション インデックス ファイルを更新します。
【引数】
Path
TagTypeName
セクション化されたテキスト ファイルのパス、または、
タグのタイプ、"NaturalDocs" を指定してください
テスト
サンプル
ソース
T_MakeTxScFile
.txsc ファイルのタイムスタンプの方が新しいときは、更新をせず、高速に処理します。
→ T_TextSection.vbs
→ ToolsLib.vbs
→ NaturalDocs 関連の構文解析
*.txsc ファイルを作成する
サンプル
_txsc\(ファイル名.拡張子).txsc の例
<File path="..\Sample.c" type="C_Type">
<TextSection keyword="Function" name="StartA" start_line="100" end_line="129"
next_to_comment_line="110"/>
<TextSection keyword="Function" name="StartB" start_line="130" end_line="159"
next_to_comment_line="140"/>
</File>
BeforeRootFullPath
AfterRootFullPath
セクション化されたテキストのルート・フォルダーのパス
セクション インデックス ファイル(.txsc) のルート・フォルダーのパス
BeforeRootFullPath 引数、AfterRootFullPath 引数に Empty を指定すると、カレント フォルダーを指定した
ときと同じ処理をします。 BeforeRootFullPath 引数、AfterRootFullPath 引数の詳細は、
SectionTypeName
出力ファイルの中の type 属性に入れる文字列
BeforeRootFullPath 引数と AfterRootFullPath 引数に、テキスト ファイルとインデックス ファイルのある場所
の関係を指定します。
参考
→ Natural Docs
TagTypeName = "NaturalDocs" の場合の Sample.c の例
/***********************************************************************
* Function: StartA
************************************************************************/
void StartA()
{
}
/***********************************************************************
* Function: StartB
************************************************************************/
void StartB()
{
}
コールツリー
MakeNaturalComments_C_Language
config->AdditionalKeywords
g_NaturalDocsKeywords
(src)
MakeTextSectionIndexFile
End of File
MakeTextSectionIndexFile
(.vbs)
(.c)
←
▼
▲
Sub ConnectInTextSectionIndexFile( in_IndexFilePath as string,
in_KeywordAndName as array of array of string, in_Empty as Empty )
セクション インデックス ファイルの中の指定したセクションを前のセクションとつなげる。
【引数】
in_IndexFilePath
in_KeywordAndName
セクション インデックス ファイルのパス
前のセクションとつなげるセクションのキーワードと名前の配列
in_Empty
Empty を指定してください
サンプル
_txsc\(ファイル名.拡張子).txsc の例
<File path="..\Sample.c" type="C_Type">
<TextSection keyword="Function" name="StartA" start_line="100" end_line="129"
next_to_comment_line="110"/>
<TextSection keyword="Function" name="StartB" start_line="130" end_line="159"
next_to_comment_line="140"/>
</File>
ConnectInTextSectionIndexFile "Sample.c", Array( Array( "Function", "StartB" ) )
上記 TextSection タグをつなげるスクリプト:
つなげた後の.txsc ファイルの例:
<File path="..\Sample.c" type="C_Type">
<TextSection keyword="Function" name="StartA" start_line="100" end_line="159"
next_to_comment_line="110"/>
</File>
←
▼
▲
Set file = OpenForWriteTextSection( "file.txt", Empty, Empty )
file.Cut "Section1"
file = Empty
Function OpenForWriteTextSection( SourcePath as string, DestinationPath as string,
Option_ as Empty ) as WriteTextSectionClass
セクション化されたテキストの編集を開始します。
【引数】
SourcePath
DestinationPath
編集前のセクション化されたテキスト・ファイルのパス
編集した結果を出力するファイルのパス、または、Empty
Option_
Empty を指定してください
関連
テスト
サンプル
ソース
→ 構造化テキストフォーマット (Module Mixer)
→ ToolsLib.vbs
→ T_TextSection.vbs
返り値
返り値のオブジェクトの参照カウンターが 0 になったら、ファイルに出力されます。
セクション化されたテキスト
セクションを削除します。
file.txt ファイルの中の、"Section1" を含むセクションを削除します。
→ UsesSection (Mxp_Symbol)
残すセクションを選択します。
←
▼
▲
Sub WriteTextSectionClass::Cut( Key as string )
セクションを削除します。
【引数】
Key
セクションの中に含まれる文字列
ソース
→ ToolsLib.vbs